import pandas as pd


# 读取Excel文件
def read_excel(file_path):
    return pd.read_excel(file_path, engine='openpyxl')


# 计算加权得分
def calculate_weighted_score(df, distance_weight=0.6, scheme_weight=0.4):
    # 确保最短距离列中的值是数值类型
    df['最短距离'] = pd.to_numeric(df['最短距离'], errors='coerce')
    # 计算最短距离得分，距离越短得分越高，这里使用倒数
    distance_scores = 1 / df['最短距离']
    # 行车方案数得分直接是方案数
    scheme_scores = df['行车方案数']

    # 计算加权得分
    df['Weighted_Score'] = (distance_scores * distance_weight) + (scheme_scores * scheme_weight)
    return df


# 保存结果到Excel
def save_to_excel(df, output_file):
    df.to_excel(output_file, index=False)


# 主函数
def main():
    excel_file = '路径规划结果表.xlsx'  # Excel文件名
    output_file = '综合权重得分表.xlsx'  # 输出的Excel文件名

    # 读取Excel数据
    df = read_excel(excel_file)

    # 计算加权得分
    df = calculate_weighted_score(df)

    # 找出得分最高的配送点
    best_delivery_point = df.loc[df['Weighted_Score'].idxmax()]
    print(f"最佳配送点是：{best_delivery_point['起点']}，得分为：{best_delivery_point['Weighted_Score']}")

    # 保存包含综合得分的DataFrame到新的Excel文件
    save_to_excel(df, output_file)


# 运行主函数
if __name__ == "__main__":
    main()